
pandas 物件具備一組常用的數學和統計方法,他們大多是歸約或總結統計方法,可以從 Series 提取一個值(如 sum() 與 mean()),或是從 DataFrame 的列或欄取出一個 Series。
與 NumPy 陣列的類似方法相比他們具備缺失資料的處理機制,考慮一個小型的 DataFrame:
In [267]: df = pd.DataFrame([[1.4, np.nan], [7.1, -4.5],
.....: [np.nan, np.nan], [0.75, -1.3]],
.....: index=["a", "b", "c", "d"],
.....: columns=["one", "two"])
In [268]: df
Out[268]:
one two
a 1.40 NaN
b 7.10 -4.5
c NaN NaN
d 0.75 -1.3
呼叫 DataFrame 的 sum 方法會得到一個包含直欄總和的 Series:
In [269]: df.sum()
Out[269]:
one 9.25
two -5.80
dtype: float64
傳入 axis="columns" 或 axis=1 會改成跨欄加總:
In [270]: df.sum(axis="columns")
Out[270]:
a 1.40
b 2.60
c 0.00
d -0.55
dtype: float64
當整列或整欄都是 NA 值,總和或是 0,如果有任何值不是 NA,那麼結果將不是NA。
可以使用 skipna 來停用此功能,此時在一列或一欄裡的任何 NA 值都會讓相應的結果變成 NA:
In [271]: df.sum(axis="index", skipna=False)
Out[271]:
one NaN
two NaN
dtype: float64
In [272]: df.sum(axis="columns", skipna=False)
Out[272]:
a NaN
b 2.60
c NaN
d -0.55
dtype: float64
有些彙總統計至少需要一個非 NA 值才能產生值,如 mean:
In [273]: df.sum(axis="columns")
Out[273]:
a 1.400
b 1.300
c NaN
d -0.275
dtype: float64
axis :想歸約的軸,index 是 DataFrame 的列,columns 是欄。skipna :排除缺失值,預設為 True。level :如果軸是分層檢索 (MuliIndex),那就依層分組歸約。
今日的分享就到這囉,我們明天見,掰掰!